﻿Imports Testeitor.DAL
Imports System.Data.SqlClient
Imports Testeitor.Entidades

Public Class ResultadoTestDAO
    Inherits DAOBase

    Public Overrides Function CargarEntidad(ByVal reader As System.Data.IDataReader, ByRef stack As Stack(Of Integer)) As Entidades.EntityBase
        Dim ent As New ResultadoTestEntity

        Dim temp As Object
        'Campo Id
        ent.Id = Convert.ToInt32(reader("id"))
        'Resto de campos
        temp = reader("descripcion")
        If temp.Equals(DBNull.Value) Then
            ent.Descripcion = String.Empty
        Else
            ent.Descripcion = Convert.ToString(reader("descripcion"))
        End If

        temp = reader("test_id")
        If temp.Equals(DBNull.Value) Then
            ent.Test = New TestEntity
        Else
            Dim index As Integer
            index = Convert.ToInt32(reader("test_id"))
            stack.Push(index)
        End If

        temp = reader("checked")
        If temp.Equals(DBNull.Value) Then
            ent.Checked = False
        Else
            ent.Checked = Convert.ToBoolean(reader("checked"))
        End If

        temp = reader("warnings")
        If temp.Equals(DBNull.Value) Then
            ent.Warnings = String.Empty
        Else
            ent.Warnings = Convert.ToString(reader("warnings"))
        End If

        temp = reader("errores")
        If temp.Equals(DBNull.Value) Then
            ent.Errores = String.Empty
        Else
            ent.Errores = Convert.ToString(reader("errores"))
        End If

        temp = reader("fechaEjecucion")
        If temp.Equals(DBNull.Value) Then
            ent.Fecha = DateTime.Now
        Else
            ent.Fecha = Convert.ToDateTime(reader("fechaEjecucion"))
        End If

        temp = reader("estado_id")
        If temp.Equals(DBNull.Value) Then
            ent.Estado = New EstadoEntity
        Else
            Dim index As Integer
            index = Convert.ToInt32(reader("estado_id"))
            stack.Push(index)
        End If

        CargarEntidad = ent
    End Function

    Public Overrides Sub CargarRelacion(ByRef ent As Entidades.EntityBase, ByRef stack As Stack(Of Integer))
        Dim tempDao1 As New TestDAO
        Dim entidad1 As New TestEntity
        entidad1 = tempDao1.Seleccionar(stack.Pop)
        DirectCast(ent, ResultadoTestEntity).Test = entidad1

        Dim tempDao As New TestDAO
        Dim entidad As New TestEntity
        entidad = tempDao.Seleccionar(stack.Pop)
        DirectCast(ent, ResultadoTestEntity).Test = entidad

    End Sub

    Public Overrides Function commandActualizar(ByRef ent As Entidades.EntityBase) As System.Data.SqlClient.SqlCommand
        Dim cmd As New SqlCommand("UPDATE ResultadoTest SET descripcion = @descripcion, test_id = @test_id, checked = @checked, warnings = @warnings, errores = @errores, fechaEjecucion = @fechaEjecucion, estado_id = @estado_id WHERE id = @id")
        'Creo los parametros para la consulta
        cmd.Parameters.Add(New SqlParameter("@descripcion", DirectCast(ent, ResultadoTestEntity).Descripcion))
        cmd.Parameters.Add(New SqlParameter("@test_id", DirectCast(ent, ResultadoTestEntity).Test))
        cmd.Parameters.Add(New SqlParameter("@checked", DirectCast(ent, ResultadoTestEntity).Checked))
        cmd.Parameters.Add(New SqlParameter("@warnings", DirectCast(ent, ResultadoTestEntity).Warnings))
        cmd.Parameters.Add(New SqlParameter("@errores", DirectCast(ent, ResultadoTestEntity).Errores))
        cmd.Parameters.Add(New SqlParameter("@fechaEjecucion", DirectCast(ent, ResultadoTestEntity).Fecha))
        cmd.Parameters.Add(New SqlParameter("@estado_id", DirectCast(ent, ResultadoTestEntity).Estado))
        cmd.Parameters.Add(New SqlParameter("@id", ent.Id))
        commandActualizar = cmd
    End Function

    Public Overrides Function commandEliminar(ByVal id As Integer) As System.Data.SqlClient.SqlCommand
        'Creo el Command con la consulta
        Dim cmd As New SqlCommand("DELETE FROM ResultadoTest WHERE id = @id")
        'Creo los parametros para la consulta
        cmd.Parameters.Add(New SqlParameter("@id", id))
        commandEliminar = cmd
    End Function

    Public Overrides Function commandInsertar(ByRef ent As Entidades.EntityBase) As System.Data.SqlClient.SqlCommand
        'Creo el Command con la consulta
        Dim cmd As New SqlCommand("INSERT INTO ResultadoTest VALUES(@descripcion, @test_id, @checked, @warnings, @errores, @fechaEjecucion, @estado_id)")
        'Creo los parametros para la consulta
        cmd.Parameters.Add(New SqlParameter("@descripcion", DirectCast(ent, ResultadoTestEntity).Descripcion))
        cmd.Parameters.Add(New SqlParameter("@test_id", DirectCast(ent, ResultadoTestEntity).Test))
        cmd.Parameters.Add(New SqlParameter("@checked", DirectCast(ent, ResultadoTestEntity).Checked))
        cmd.Parameters.Add(New SqlParameter("@warnings", DirectCast(ent, ResultadoTestEntity).Warnings))
        cmd.Parameters.Add(New SqlParameter("@errores", DirectCast(ent, ResultadoTestEntity).Errores))
        cmd.Parameters.Add(New SqlParameter("@fechaEjecucion", DirectCast(ent, ResultadoTestEntity).Fecha))
        cmd.Parameters.Add(New SqlParameter("@estado_id", DirectCast(ent, ResultadoTestEntity).Estado))
        commandInsertar = cmd
    End Function

    Public Overrides Function commandSeleccionar(ByVal id As Integer) As System.Data.SqlClient.SqlCommand
        'Creo el Command con la consulta
        Dim cmd As New SqlCommand("SELECT * FROM ResultadoTest WHERE id = @id")
        'Creo los parametros para la consulta
        cmd.Parameters.Add(New SqlParameter("@id", id))
        commandSeleccionar = cmd
    End Function

    Public Overrides Function commandSeleccionarWhere(ByVal where As String) As SqlCommand
        'Creo el Command con la consulta
        Dim cmd As New SqlCommand("SELECT * FROM ResultadoTest WHERE " + where)
        'Creo los parametros para la consulta
        cmd.Parameters.Add(New SqlParameter("@where", where))
        commandSeleccionarWhere = cmd
    End Function

    Public Overrides Function commandSeleccionarTodas() As System.Data.SqlClient.SqlCommand
        Dim cmd As New SqlCommand("SELECT * FROM ResultadoTest")
        commandSeleccionarTodas = cmd
    End Function
End Class
